﻿using System;
using System.Collections.Generic;
using UnityEngine;
using Yoozoo.Framework.Core;
using Yoozoo.Managers.ResourceManagerV2.Runtime;

namespace Gameplay.PVE.Survivor
{
    public enum EBulletMovementType
    {
        Track = 1,
        Straight = 2,
        Parabola = 3,
        Trap = 5,
        Stick = 6,
        SpecialParabola = 7,
        WaveShoot = 8,
    }

    public enum EBulletShapeType
    {
        Default = 0,
        Sector = 1,
        Rect = 2,
        Circle = 3,
        Circle_Stroge=6,
        //占位符
        ShapeBottom = 10,
    }

    public enum EBattleRegionShapeType
    {
        Circle = 1,
        Rect = 2,
    }

    public enum EBulletDestroyType
    {
        OnHit = 1,
        OnReachTarget = 2,
        OnTime = 3,
    }

    public enum EBattleSkillId
    {
        AutoRiffle = 1001,
    }

    public enum EBattleBulletId
    {
        AutoRiffleBullet = 10001,
    }

    public enum EBattleElementId
    {
        AutoRiffleDamage = 100001,
    }
    
    public enum EBattleElementMainType
    {
        Damage = 1,
        ChangeProperty = 2,
        Trigger = 3,
        Control = 4,
        Immune = 5,
        Shield = 6,
    }

    public enum EBattleElementSubType
    {
        NormalDamage = 101,
        Heal = 102,
        DirectlyDead = 104,
        ChangeSpeed = 204,
        ChangeBullet = 2010,
        ExtraBullet = 2011,
        ExtraChildSkill = 2012,
        KnockFly = 401,
        Freeze = 402,
        Uncontrollable = 501,
    }

    /// <summary>
    /// 触发条件
    /// </summary>
    public enum EBattleEventCondition
    {
        None = 0,
        //定时器
        Timer = 1,
        //阶段结束
        StageEnd = 2,
        //被敌人发现
        FoundByEnemy = 3,
        //进入区域
        EnterRegion = 5,
    }

    /// <summary>
    /// 战斗事件类型
    /// </summary>
    public enum EBattleEventType
    {
        //按密度刷怪
        SpawnEnemyByDensity = 1,
        //立即刷怪
        SpawnEnemy = 2,
        //加入
        JoinTeam = 3,
        //怪物索敌
        SearchEnemy = 4,
        //跳往目标阶段
        JumpToStage = 5,
        //瞬移
        Teleport = 6,
        //更新动态阻挡
        UpdateDynamicObject = 7,
        //解锁迷雾
        UnlockFog = 8,
        //创建子弹
        CreateBullet = 9,
        //播放Timeline
        PlayTimeline = 10,
        //UI
        ShowProgressUI = 11,
        //切换RPG
        SwitchToRpg = 12,
        //对话
        GuideDialogue = 13,
        //获得美金
        GetDollar = 14,
        //关闭事件
        CloseEvent = 100,
    }

    public enum ESpawnType
    {
        RandomGroup = 1,
        CertainGroup = 2,
        MapGroup = 3,
    }
    
    public enum ESpawnComingType
    {
        None = 0,
        ByPrefab = 1,
    }
    
    public enum EBattleResourceType
    {
        Model = 1,
    }

    public enum EBattleSkillType
    {
        RandomSkill = 4,
    }

    public enum EBulletDamageType
    {
        NormalAttack = 1,
        Skill = 2,
    }
    
    public enum EBattleSkillSearchType
    {
        Opposite = 1,
        Ally = 2,
    }

    public enum EBattleSkillSearchSort
    {
        Near = 0,
        Far = 1,
        HpPercentLow = 2,
        HpPercentHigh = 3,
        Random = 6,
        Self = 8,
    }

    public enum EBattleSkillSearchRandom
    {
        None = 0,
        TragetRange = 1
    }

    public enum ESearchChangeType
    {
        //不变
        Default = 0,
        //
        OnTargetDead = 1,
    }

    public enum EBattleTaskType
    {
        None = 0,
        Collect = 1,
        KillUnit = 2,
        InteractiveRegion = 3,
        TeamReachRegion = 4,
        HoldOnByTime = 5,
        Timeline = 6,
        UnitRescue = 8,
        GetDollar = 9,
        UnitReachRegion = 10,
    }

    public enum EBattleResId
    {
        TeamCircle = 11,
        GuideCompass = 21,
        Hud = 101,
        TeamHud = 102,
        BubbleHud = 103,
        ChatBubbleHud = 104,
        HudBoss = 105,
        DeckCircle = 301,
        DeckLevel = 302,
        DeckLoading = 303,
        DirectorCircle = 401,
        DirectorRect = 402,
        DirectorSector30 = 403,
        DirectorSector45 = 404,
        DirectorSector60 = 405,
        DirectorSector90 = 406,
        DirectorSector120 = 407,
        DirectorCircleStroge = 408,
        DirectorRectStroge = 409,
        DirectorSector30Storage = 410,
        DirectorSector45Storage = 411,
        DirectorSector60Storage = 412,
        DirectorSector90Storage = 413,
        DirectorSector120Storage = 414,
        DropDollar = 501,
        Torch = 601,
        SceneLight = 602,
        SniperLine = 6009,
    }

    public enum ETargetTeam
    {
        Self = 1,
        Enemy = 2,
        All = 3,
    }

    public enum EFlyTextType
    {
        Damage = 201, //对敌方造成的伤害
        Dollar = 202,
        OtherDamage = 203,//对己方成的伤害
        CriticalDamage = 204,//对敌方造成的暴击伤害
        OtherCriticalDamage = 205,//对己方造成的暴击伤害
        Heal = 206,
    }

    public enum EEnemyAIType
    {
        SearchTarget = 1,
        SearchBattlePoint = 2,
        SearchAllMap = 3,
        DontSearch = 4,
    }
    
    public enum EBehaviorState
    {
        Idle = 0,
        Patrol = 1,
        Battle = 2,
    }

    public enum EBattleInteractableEvent
    {
        SelfAnimation = 1,
        PlayerAnimation = 2,
        PlayerMoveTo = 3,
        CameraShake = 4,
        FlyText = 5,
        TriggerEvent = 6,
        TimeScale = 7,
        ChangeCameraFollow = 8,
        ChangeCameraTrack = 9,
        ShowHud = 10,
        ShowBubble = 11,
        JoinTeam = 12,
    }

    public enum EAudioState
    {
        Common = 1,
        Battle = 2,
    }

    public enum EMapUnitType
    {
        Enemy = 1,
        Npc = 2,
        Teammate = 3,
        NpcRescue = 4,
        Truck = 5,
    }
    public enum ELoadingResourceType
    {
        MapData = 1,
        MapNavMesh = 2,
        MainUnit = 3,
        Timeline = 4,
        Camera = 5,
        MapResource = 6,
        StagePoint = 7,
    }

    public enum EModelType
    {
        None = 0,
        Mesh = 1,
        Gpu = 2,
    }

    public enum EPassiveTriggerType
    {
        SelfDead = 6,
    }

    public enum ESkillEventType
    {
        HideWeapon = 1,
        MoveSummonUnit = 2,
        SummonUnitCastSkill = 3,
    }

    public enum ESkillTargetType
    {
        Unit = 1,
        Position = 2,
        Forward = 3,
    }

    public enum EEffectFollowType
    {
        None = 0,
        SetParent = 1,
        FollowPositionAndForward = 2,
        FollowPosition = 3,
    }

    public enum EBossFeature
    {
        Hud = 1,
        Focus = 2,
        Warning = 4,
    }

    public enum ECameraType
    {
        Follow = 1,
        Boss = 2,
    }

    public enum EElementConflictType
    {
        Coexist = 0,
        NewCover = 1,
        NoCover = 2,
        Layer = 3,
    }

    public enum EBattlePropsType
    {
        Dollar = 1,
        Buffs = 2,
    }

    public enum EBattleInteractableType
    {
        Single,
        Repeat,
    }
    
    public enum EFogRenderType
    {
        Hole,
        Fill,
    }

    public enum EBubbleEventType
    {
        None = 0,
        Kill = 1,
        Cured = 2,
        HpReduce = 3,
        ReceiveDmg = 4,
        Active = 5,
        Miss = 6,
        StopMove = 7,
    }
}
